package com.zx.notification.admin.service;

import com.zx.core.wrapper.ListWrapper;
import com.zx.core.wrapper.ObjectWrapper;
import com.zx.core.wrapper.PageWrapper;
import com.zx.core.wrapper.ResponseWrapper;
import com.zx.notification.common.param.InboxReadRecordsParam;
import com.zx.notification.common.vo.InboxReadRecordsVO;

/**
 * <p>
 * description: 站内信阅读记录管理服务接口 <br>
 * create: 2025-10-20
 * </p>
 *
 * @author zhou  xun
 */
public interface IInboxReadRecordsService {

    /**
     * 分页查询站内信阅读记录列表VO
     *
     * @param inboxReadRecordsParam 站内信阅读记录查询参数
     * @return {@link PageWrapper<InboxReadRecordsVO>}
     */
    PageWrapper<InboxReadRecordsVO> getInboxReadRecordsVOListByPage(InboxReadRecordsParam inboxReadRecordsParam);

    /**
     * 根据ID查询站内信阅读记录信息
     *
     * @param inboxReadRecordId 站内信阅读记录id
     * @return {@link ObjectWrapper<InboxReadRecordsVO>}
     */
    ObjectWrapper<InboxReadRecordsVO> selectInboxReadRecordById(String inboxReadRecordId);

    /**
     * 根据ID删除站内信阅读记录
     *
     * @param inboxReadRecordId 站内信阅读记录id
     * @return {@link ResponseWrapper}
     */
    ResponseWrapper deleteInboxReadRecordById(String inboxReadRecordId);

    /**
     * 根据用户ID和阅读状态查询站内信阅读记录列表
     *
     * @param userId     用户ID
     * @param readStatus 阅读状态
     * @return {@link ListWrapper<InboxReadRecordsVO>}
     */
    ListWrapper<InboxReadRecordsVO> getInboxReadRecordsListByUserIdAndStatus(String userId, String readStatus);

    /**
     * 更新通知的阅读状态
     *
     * @param notificationId 通知ID
     * @param readStatus     阅读状态
     * @return {@link ResponseWrapper}
     */
    ResponseWrapper updateReadStatus(String notificationId, String readStatus);
}